Ext.define('AmpleHarvest.objects.aqb.search.cEnhancedSearch',
{
//	jsonPost		: null, //eval("(" + g_arr_Requests["json"] + ")"),
	extend			: 'Ext.tree.Panel',
	alias			: 'widget.ampleharvest-objects-aqb-search-cenhancedsearch',
	requires		:
	[
	 		'AmpleHarvest.DATA.Store.cQueryCondition'
	],
	flex			: 1,
	useArrows		: true,
	rootVisible		: false,
	multiSelect		: true,
	singleExpand	: false,
	plugins			: [
	       			   {
	       				   ptype : 'rowediting',
	       				   errorSummary	: false,
	       				   autoCancel	: false,
	       				   clicksToEdit	: 1
	       			   }
	       			   
	       			   ],

	initComponent	: function()
	{
		var obj_This = this;
		
//		this.plugins =
//			[
//				Ext.create('Ext.grid.plugin.RowEditing',
//						{
//							errorSummary	: false,
//							clicksToEdit	: 1
//						})
//			];
		
		this.columns			=
			[
					{
						xtype		: 'treecolumn', // this is so we know which column
						// will show the tree
						text		: 'Type',
						dataIndex	: 'main',
						sortable	: false
					},
					{
						header		: 'Property',
						dataIndex	: 'property',
						minWidth	: 130,
						flex		: 1,
						sortable	: false,
						field		: Ext.create("AmpleHarvest.util.cPropertiesDropDown",
							{
							targetPath	: '/solr-os-base/'
							})
					},
					{
						header		: 'Condition',
						dataIndex	: 'condition',
						width		: 130,
						sortable	: false,
						field		:
						{
							xtype			: 'combobox',
							triggerAction	: 'all',
							selectOnTab		: true,
							store			:
							[
									[
											'==', 'IS'
									],
									[
											'!=', 'IS NOT'
									]
							],
							lazyRender		: true,
							listClass		: 'x-combo-list-small'
						}
					},
					{
						header		: 'Value',
						dataIndex	: 'value',
						flex		: 1,
						sortable	: false,
						editor		: {
//						 defaults to textfield if no xtype is supplied
						 allowBlank: true
						}
//						field		: Ext.create("AmpleHarvest.util.cPropertiesDropDown",
//								{
//									searchTerm 	: 'date.name',
//									targetPath	: '/solr-os-base/'
//								})
					},
					{
						header		: 'Boolean',
						dataIndex	: 'bool',
						width		: 130,
						sortable	: false,
						field		:
						{
							xtype			: 'combobox',
							triggerAction	: 'all',
							selectOnTab		: true,
							store			:
							[
									[
											'AND', 'AND'
									],
									[
											'OR', 'OR'
									]
							],
							lazyRender		: true,
							listClass		: 'x-combo-list-small'
						}
					}
			];		
		
		
//		this.jsonPost = Ext.decode(g_arr_Requests["json"]);
		this.store = Ext.create("AmpleHarvest.DATA.Store.cQueryCondition");

//		this.plugins =
//		[
//			Ext.create('Ext.grid.plugin.RowEditing',
//					{
//						errorSummary	: false,
//						clicksToEdit	: 1
//					})
//		];
		
		this.viewConfig  = {
			plugins	:
			{
				ptype	: 'treeviewdragdrop'
			}
		};

		this.dockedItems =
		[
				{
					xtype	: 'toolbar',
					items	:
					[
//							{
//								iconCls	: 'query-condition-add',
//								text	: 'Add Group',
//								// scope: this,
//								handler	: function()
//								{
//									myRootNode = obj_This.getStore()
//											.getRootNode();
//									myRootNode.appendChild(
//											{
//												main		: '',
//												property	: '',
//												condition	: '',
//												value		: '',
//												iconCls		: 'query-condition-group',
//												expanded	: false,
//												children	: []
//											}
//									);
//								}
//							},
							{
								iconCls	: 'query-condition-add',
								text	: 'Add Query Condition',
								scope	: this,
								handler	: function()
								{
									myRootNode = this.getStore()
											.getRootNode();
									myRootNode.appendChild(
											{
												main		: '',
												property	: '',
												condition	: '',
												value		: '',
												bool		: '',
												leaf		: true,
												iconCls		: 'query-condition'
											});
								}
							},
							{
								iconCls	: 'query-condition-delete',
								text	: 'Remove Condition',
								scope: this,
								handler	: function()
								{
									var obj_row_selected = this.getSelectionModel().getSelection()[0];
									if(Ext.isObject(obj_row_selected))
									{
										this.plugins[0].cancelEdit();
										obj_row_selected.remove();
									}
								}
							}
					]
				}
		]

		this.callParent();
		if (this.json)
		{
			this.preLoad(this.getStore().getRootNode(),
					Ext.decode(this.json).Query
			);
		}
	},

	preLoad			: function(myRootNode, jsonPost)
	{
		for (var int_I = 0; int_I < jsonPost.length; int_I++)
		{
			if (jsonPost[int_I].children)
			{
				this.addGroup(myRootNode, jsonPost[int_I]);
			}
			else if (jsonPost[int_I].property != 'general')
			{
				this.addRow(myRootNode, jsonPost[int_I]);
			}
		}
	},
	addRow			: function(node_Obj, a_props)
	{
//		console.log(node_Obj);
//		console.log(a_props);
		node_Obj.appendChild(
				{
					main		: '',
					property	: a_props.property,
					condition	: a_props.condition,
					value		: a_props.value,
					bool		: a_props.join,
					leaf		: true,
					iconCls		: 'query-condition'
				});

	},
	addGroup		: function(node_Obj, jsonPost)
	{
//		console.log(node_Obj);
//		console.log(jsonPost);
		var appended_node = node_Obj.appendChild(
				{
					main		: '',
					property	: '',
					condition	: '',
					value		: '',
					bool		: jsonPost.join,
					iconCls		: 'query-condition-group',
					expanded	: true,
					children	: []
				});
		this.preLoad(appended_node, jsonPost.children);
	},
	
	get_QueryObject	: function()
	{
		return this.store.get_QueryObject();
	}
}
);